using System;
using System.Collections.Generic;

namespace QueueExample // 命名空间
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // 创建一个 Queue
            Queue<string> queue = new Queue<string>();

            // 入队（添加元素到队列）
            queue.Enqueue("Alice");
            queue.Enqueue("Bob");
            queue.Enqueue("Charlie");

            // 打印队列中的元素
            Console.WriteLine("Queue elements:");
            foreach (var person in queue)
            {
                Console.WriteLine(person);
            }

            // 出队（从队列中移除元素）
            string dequeuedPerson = queue.Dequeue();
            Console.WriteLine($"\nDequeued: {dequeuedPerson}"); // 输出: Dequeued: Alice

            // 查看队列顶端元素，但不移除它
            string peekPerson = queue.Peek();
            Console.WriteLine($"Next in line: {peekPerson}"); // 输出: Next in line: Bob

            // 打印更新后的队列元素
            Console.WriteLine("\nQueue elements after dequeue:");
            foreach (var person in queue)
            {
                Console.WriteLine(person);
            }

            // 检查队列的数量
            Console.WriteLine($"\nTotal elements in queue: {queue.Count}");

            // 清空队列
            queue.Clear();
            Console.WriteLine($"Total elements after clearing: {queue.Count}"); // 输出: 0
        }
    }
}
